1. Field of the Invention
The present invention relates to computer networks and more particularly to computing inter-domain paths utilizing path computation elements of a computer network.
2. Background Information
A computer network is a geographically distributed collection of nodes interconnected by communication links and segments for transporting data between end nodes, such as personal computers and workstations. Many types of networks are available, with the types ranging from local area networks (LANs) to wide area networks (WANs). LANs typically connect the nodes over dedicated private communications links located in the same general physical location, such as a building or campus. WANs, on the other hand, typically connect geographically dispersed nodes over long-distance communications links, such as common carrier telephone lines, optical lightpaths, synchronous optical networks (SONET), or synchronous digital hierarchy (SDH) links. The Internet is an example of a WAN that connects disparate networks throughout the world, providing global communication between nodes on various networks. The nodes typically communicate over the network by exchanging discrete frames or packets of data according to predefined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP). In this context, a protocol consists of a set of rules defining how the nodes interact with each other. Computer networks may be further interconnected by an intermediate network node, such as a router, to extend the effective “size” of each network.
Since management of interconnected computer networks can prove burdensome, smaller groups of computer networks may be maintained as routing domains or autonomous systems. The networks within an autonomous system (AS) are typically coupled together by conventional “intradomain” routers configured to execute intradomain routing protocols, and are generally subject to a common authority. To improve routing scalability, a service provider (e.g., an ISP) may divide an AS into multiple “areas”. It may be desirable, however, to increase the number of nodes capable of exchanging data; in this case, interdomain routers executing interdomain routing protocols are used to interconnect nodes of the various ASes. Moreover, it may be desirable to interconnect various ASes that are operated under different administrative domains. As used herein, an AS or an area is generally referred to as a “domain”, and a router that interconnects different domains together is generally referred to as a “border router”.
An example of an interdomain routing protocol is the Border Gateway Protocol version 4 (BGP), which performs routing between domains (ASes) by exchanging routing and reachability information among neighboring interdomain routers of the systems. An adjacency is a relationship formed between selected neighboring (peer) routers for the purpose of exchanging routing information messages and abstracting the network topology. The routing information exchanged by BGP peer routers typically includes destination address prefixes, i.e., the portions of destination addresses used by the routing protocol to render routing (“next hop”) decisions. Examples of such destination addresses include IP version 4 (IPv4) and version 6 (IPv6) addresses. BGP generally operates over a reliable transport protocol, such as TCP, to establish a TCP connection/session. The BGP protocol is well known and generally described in Request for Comments (RFC) 1771, entitled A Border Gateway Protocol 4 (BGP-4), published March 1995.
Examples of an intradomain routing protocol, or an interior gateway protocol (IGP), are the Open Shortest Path First (OSPF) routing protocol and the Intermediate-System-to-Intermediate-System (IS-IS) routing protocol. The OSPF and IS-IS protocols are based on link-state technology and, therefore, are commonly referred to as link-state routing protocols. Link-state protocols define the manner with which routing information and network-topology information are exchanged and processed in a domain. This information is generally directed to an intradomain router's local state (e.g., the router's usable interfaces and reachable neighbors or adjacencies). The OSPF protocol is described in RFC 2328, entitled OSPF Version 2, dated April 1998 and the IS-IS protocol used in the context of IP is described in RFC 1195, entitled Use of OSI IS-IS for routing in TCP/IP and Dual Environments, dated December 1990, both of which are hereby incorporated by reference.
Multi-Protocol Label Switching (MPLS) Traffic Engineering has been developed to meet data networking requirements such as guaranteed available bandwidth or fast restoration. MPLS Traffic Engineering exploits modern label switching techniques to build guaranteed bandwidth end-to-end tunnels through an IP/MPLS network of label switched routers (LSRs). These tunnels are a type of label switched path (LSP) and thus are generally referred to as MPLS Traffic Engineering (TE) LSPs. Examples of MPLS TE can be found in RFC 3209, entitled RSVP-TE: Extensions to RSVP for LSP Tunnels dated December 2001, RFC 3784 entitled Intermediate-System-to-Intermediate-System (IS-IS) Extensions for Traffic Engineering (TE) dated June 2004, and RFC 3630, entitled Traffic Engineering (TE) Extensions to OSPF Version 2 dated September 2003, the contents of all of which are hereby incorporated by reference in their entirety.
Establishment of an MPLS TE-LSP from a head-end LSR to a tail-end LSR involves computation of a path through a network of LSRs. Optimally, the computed path is the “shortest” path, as measured in some metric, that satisfies all relevant LSP Traffic Engineering constraints such as e.g., required bandwidth, availability of backup bypass tunnels for each link and node included in the path, etc. Various path computation methodologies are available including CSPF (constrained shortest path first).
One example algorithm that may be used to compute the shortest path from a source to a destination is the well-known Dijkstra path computation algorithm. Briefly, the Dijkstra algorithm, as applied herein, computes the shortest path from a source node to any destination node, thereby creating a shortest path tree (SPT). To reach a destination node on the shortest path, a source node simply traverses the SPT to the destination node. The calculations are based on cost metrics between the nodes, and are performed outwardly from the source node. For this reason, the Dijkstra algorithm is considered a “forward path computation”. The Dijkstra algorithm is described in more detail in Section 12.2.4 of the text book Interconnections Second Edition, by Radia Perlman, published September 1999, which is hereby incorporated by reference as though fully set forth herein.
Path computation can either be performed by the head-end LSR or by some other entity operating as a path computation element (PCE). The head-end LSR (or a PCE) exploits its knowledge of network topology and resources available on each link to perform the path computation according to the LSP Traffic Engineering constraints. Notably, MPLS TE-LSPs can be configured within a single domain, e.g., area, level, or AS, or may also span multiple domains, e.g., areas, levels, or ASes.
The PCE is an entity having the capability to compute paths between any nodes of which the PCE is aware in an AS or area. PCEs are especially useful in that they are more cognizant of network traffic and path selection within their AS or area, and thus may be used for more optimal path computation. A head-end LSR may further operate as a path computation client (PCC) configured to send a path computation request to the PCE, and receive a response with the computed path, potentially taking into consideration other requests from other PCCs. It is important to note that when one PCE sends a request to another PCE, it acts as a PCC. PCEs conventionally have limited or no visibility outside of its surrounding area or AS. A PCC can be informed of a PCE either by pre-configuration by an administrator, or by a PCE Discovery (PCED) message (“advertisement”), which is sent from the PCE within its area or across the entire AS to advertise its services.
One difficulty that arises in crossing domain boundaries is that path computation at the head-end LSR requires knowledge of network topology and resources across the entire network between the head-end and the tail-end LSRs. Yet service providers typically do not share this information with each other across domain borders. In particular, network topology and resource information do not generally flow across area boundaries even though a single service provider may operate all the areas or levels. Neither the head-end LSR nor any single PCE will have sufficient knowledge to compute a path. Because of this, MPLS Traffic Engineering path computation techniques are required to compute inter-domain TE-LSPs.
A first example approach to compute inter-domain paths is a “per-domain” path computation, which relies on an entry node of each domain to compute a path to a next exit node of its domain. Entry and exit nodes of a domain (or “border nodes”) may be specified by the head-end node as “loose hops” (i.e., a notation signifying the desired entry and exit of the domain, without specifying the physical path through the domain). Alternatively, upon receiving a request to compute a path through its domain, an entry node of each domain computes the preferred exit node of the same domain. Although the “per-domain” approach is simple, it does not guarantee the computation of an optimal (shortest) inter-domain path because it is serialized, and does not account for the costs of the next domain when computing paths of the current domain. Also, this approach does not provide for a mechanism to guarantee a set of diversely routed paths because the entry try nodes in each domain perform their path computation for the required segment independently of each other.
In another example approach, the use of PCEs has been adapted to create a distributed PCE architecture, in order to extend MPLS TE-LSPs across domain boundaries. An example of such a distributed architecture is described in commonly-owned copending U.S. patent application Ser. No. 10/767,574, entitled COMPUTING INTER-AUTONOMOUS SYSTEM MPLS TRAFFIC ENGINEERING LSP PATHS, filed by Vasseur et al., on Sep. 18, 2003, the contents of which are hereby incorporated by reference in its entirety. In a distributed PCE architecture, the visibility needed to compute paths is extended between adjacent domains so that PCEs may cooperate to compute paths across multiple domains by exchanging virtual shortest path trees (VSPTs) while preserving confidentiality across domains (e.g., when applicable to ASes).
VSPTs, which may be represented as virtual links made of “loose hops”, are used because service providers may desire to maintain their internal network architectures and designs confidential. One way to compute the VSPTs is by using a virtual shortest path tree (VSPT) algorithm. Generally, a VSPT is a compressed path description (entry and exit/destination points of domains) that informs a previous PCE that a destination can be reached from a particular entry to a particular exit in such a way that the internal path specifics are kept confidential from an adjacent domain. The virtual links that compose the VSPT will generally have an associated network cost for each calculated link. It should be noted that in the context of multiple domains operating under a common authority (e.g. a unique service provider), such virtual links may also specify an entire path. A set of virtual links may be further organized (in certain protocols) within an explicit route object (ERO) to facilitate transfer of the compressed path descriptions to the previous PCE.
Specifically, according to the VSPT algorithm, for an inter-domain path computation example, a PCC (e.g., a head-end node) first sends a path computation request to a known local PCE in its domain to compute a path to a destination (e.g., a tail-end node). The path computation request is then passed from the local PCE to a PCE in every domain on the way to the destination (“downstream” domains).
Once reached by the path computation request, the PCE in the final domain containing the destination computes a VSPT, which is a shortest path tree rooted at the destination and includes the set of shortest path(s) satisfying a set of required constraints from this destination to every border router of the domain. This may be computed using a CSPF (constrained shortest path first) algorithm as known in the art or any other suitable algorithm. The PCE of the final domain then sends the VSPT to the previous domain's PCE with a virtual link (or a “loose hop”). The VSPT optionally uses the loose hop in such a way that hops internal to a domain and their costs remain confidential. A loose hop may have a single associated cost that is a combination or representation of internal costs.
The PCE in the previous domain now repeats execution of the VSPT algorithm, and concatenates the VSPT it received from the final PCE with the topology of its own domain (including any inter-domain links) to compute new paths. This process repeats through all domains until the response reaches the originating PCC. For this reason the VSPT algorithm is referred to as a “recursive backward path computation”.
In order for a recursive backward path computation to function properly, an agreement must exist between adjacent domains to share the visibility needed to compute paths. Without an agreement, PCEs may not cooperate to compute paths across multiple domains by exchanging VSPTs, even though a VSPT maintains confidentiality. In these circumstances, adjacent domains may only advertise a single virtual link, which other domains must use in their SPTs. There are multi-domain situations (e.g., domains A-B-C), however, where certain domains may have agreements with certain other domains (A with B, and A with C), but where those other domains do not share an agreement (B not with C). VSPT calculation in these situations may not be possible where agreements do not exist between all adjacent domains.
There remains a need, therefore, for a technique that allows a single head-end node of a first domain to efficiently compute the shortest inter-domain path, without requiring path computation from multiple nodes in multiple other domains. There is also a need for a technique that allows the head-end node to compute the path through other domains having an agreement with the first domain, but where the other domains do not have agreements with each other.